# 导入模块
from userweb.models import Permission
from django.conf import settings


def init_permission(request, obj):
    """
    权限和菜单的初始化
    :param request:
    :param obj:
    :return:
    """

    # 获取当前用户可访问的权限

    permission_queryset = list(Permission.objects.filter(role__login__loginid=obj.loginid).
                               values('id', 'title', 'url', 'order', 'menu_id', 'menu__title', 'menu__icon').distinct())

    # 定义两个集合
    permission_list = []
    menu_dict = {}
    # 遍历获取permission_list数据
    for item in permission_queryset:
        permission_list.append(item.get('url'))
    # 附加登陆后的基础url
    permission_list.extend(settings.AUTHED_WHITE_URL)

    # 生成menu_dict数据
    for item in permission_queryset:
        # 获取当前记录的menu_id
        menu_id = item.get('menu_id')
        # 判断menu_id是否存在
        if not menu_id: continue
        # 判断当前的menu_是否在menu_dict中存在
        if menu_id not in menu_dict:
            menu_dict[menu_id] = {
                'title': item.get('menu__title'),
                'icon': item.get('menu__icon'),
                'children': [
                    {
                        'title': item.get('title'),
                        'url': item.get('url'),
                        'order': item.get('order'),
                    }
                ]
            }
        else:
            menu_dict[menu_id]['children'].append({'title': item.get('title'), 'url': item.get('url'), 'order': item.get('order'), })

    # 把准备的两个数据放置在session中
    request.session[settings.PERMISSION_SESSION_KEY] = permission_list
    request.session[settings.MENU_SESSION_KEY] = menu_dict